1. Field of Use
The present invention relates to data processing systems and more particularly to configuration management techniques.
2. Prior Art
As well known in the art, special purpose as well as general purpose software needs a configuration mechanism in order to be flexible enough to be used in different environments, with different applications or to be run in a manner desired or required by a particular user or organization. Software configuration has been accomplished in various ways. Most configuration methods operate on a single level basis; that is, a value can be assigned with a possible default value when the value is not assigned. In addition, some configuration systems require direct access to the configuration representation system such as for editing a text based configuration file while still others utilize a database access via special utilities and programmable interfaces. Examples of the latter include workstation configuration in GCOS8 operating system software developed by Bull HN Information Systems Inc. and the Windows registry in Windows 95.RTM. software developed by Microsoft Corporation.
At least two main approaches have been used by the configuration systems that require direct access to the configuration representation systems. The first approach is to associate values to items that are known by the configuration system that is often closely tied to the software being configured. In this type of system, the configuration set of items must be known by the software being configured. In those instances where a user assigns a value to an unknown configuration item, the system will report an error condition.
The second approach utilizes "environment variables" to configure the environment for the different software components being used in the system. As well known in the art, environment variables are a set of strings termed "environment", distinct from the "arguments", that are made available to an application program (process) when it executes. In this type of system, values are assigned to a variable that may or may not be used by different software components. The configuration system is not responsible or required to validate the configuration items although it may perform some syntactic validation. Thus, in contrast to the first approach, if a user assigns a value to a configuration item (i.e., to an environment variable), that is not used by any software component executed, the configuration system reports no error condition. Hence, the second approach allows configuration systems, such as those used in UNIX.RTM. based systems, to utilize an environment variable style approach. But, it appears that the relative order of variable assignment might be significant. That is, there may be sections in the configuration file that allow the grouping of different types of configuration items, each beginning with a section header. Hence, records in one section would have a completely different meaning when placed in another section.
In addition to the above, there are other types of systems that use environment variables in connection with software testing and optimizing software for any one of a plurality of variant architectures. Such systems are described in U.S. Pat. Nos. 5,634,098 and 5,459,854. Another system utilizes an "environment file" created and maintained by software that reads it. The file is used to identify the "default System Environment" of users without special requirements. In addition, an environment file may be included in any userid for users of a specific userid to use an environment other than the system default. This arrangement is described in the publication entitled, "Operational Directory Interface (ODI) Administrators Guide", Order Number LC40, Rev. 2, published by Bull HN Information Systems Inc., Copyrighted 1992, 1995. While these arrangements are used to define environments, they are not specifically concerned with configuring different software components through the use of environmental variables.
Accordingly, it is a primary object of the present invention to provide a method and apparatus for configuring software components in a highly flexible manner.
It is a further object of the present invention to provide a method and apparatus for configuring software components in a manner that allows a user to exert greater control over the operating environment in which such software components are running.
It is still a further object to provide a method and apparatus for configuring software components which ensures that such software components run in a most efficient manner while still allowing the user great flexibility in establishing the operational environment for running such software components.